package org.javahispano.javacup.tacticas_aceptadas.FGR.javacup2009.gallegux.javacup2009.canelaenrama;

import org.javahispano.javacup.modelo.Posicion;


public class PaseAnalizado 
{
	
	
	public double angHorizontal = 0;
	public double angVertical = 0;
	public int favor = 0;
	public int contra = 0;
	public Posicion posicion = null;
	public int casos = 0;
	
	public double porcentajeFavor = 0;
	
	
	
	public PaseAnalizado(double angHorizontal, double angVertical, int favor, int contra, Posicion posicion)
	{
		this.angHorizontal = angHorizontal;
		this.angVertical = angVertical;
		this.contra = contra;
		this.favor = favor;
		this.posicion = posicion;
		
		this.porcentajeFavor = getPorcentajeFavorable();
		this.casos = favor + contra;
	}

	
	
	public PaseAnalizado(TrayectoriaAnalizada at, int favor, int contra)
	{
		this.angHorizontal = at.angHorizontal;
		this.angVertical = at.angVertical;
		this.contra = contra;
		this.favor = favor;
		this.posicion = at.posicion;
		
		this.porcentajeFavor = getPorcentajeFavorable();
		this.casos = favor + contra;
	}

	
	
	public double getPorcentajeFavorable()
	{
		double porcentaje = 0;
		
		try {
			porcentaje = (getDouble(favor) / getDouble(favor + contra));
		}
		catch (Exception e) {
			
		}
		
		return porcentaje;
	}
	
	
	
	private double getDouble(int valor)
	{
		return (double) valor;
	}
	
	
	
	public boolean esMejorQue(PaseAnalizado otro)
	{
		if (otro == null) {
			return true;
		}
		else if (this.porcentajeFavor > otro.porcentajeFavor) {
			return true;
		}
		else if (this.porcentajeFavor == otro.porcentajeFavor) {
			if (this.casos > otro.casos) {
				return true;
			}
			else if (this.casos == otro.casos) {
				double difDist = this.posicion.distancia(CTE.PTO_CENTRO_PORTERIA_RIVAL) - otro.posicion.distancia(CTE.PTO_CENTRO_PORTERIA_RIVAL);
				if (difDist < 0) {
					return true;
				}
				else if (difDist == 0) {
					if (this.posicion.getY() > otro.posicion.getY()) {
						return true;
					}
				}
			}
		}
		
		return false;
	}
		
	
	
	public String toString()
	{
		return Util.toString(angVertical) + " " + Util.toString(angHorizontal) + " " + favor + "-" + contra + " " + 
			Util.toString(porcentajeFavor) + " " + Util.toString(posicion);
	}
	
	

}
